Xavier 初始化
概述
Xavier 初始化(Glorot 初始化)是一种神经网络权重初始化策略,根据层的输入和输出维度缩放随机权重的方差,使信号在前向和反向传播中保持稳定。
关键内容
- 为什么需要特殊初始化:如果权重初始化过大,激活值会饱和(Sigmoid 接近 0 或 1),导致梯度消失;如果初始化过小,信号逐层衰减,网络无法学习。Xavier 初始化通过数学推导找到"刚刚好"的方差。
- 数学原理:W ~ N(0, 2/(n_in + n_out)) 或 Uniform(-√(6/(n_in + n_out)), √(6/(n_in + n_out))),其中 n_in 和 n_out 分别是层的输入和输出维度。这个公式确保前向传播时各层输出的方差一致,反向传播时各层梯度的方差也一致。
- 与激活函数的关系:Xavier 初始化针对Sigmoid激活函数和 tanh 设计。对于ReLU激活函数,后来发展出 He 初始化(Kaiming 初始化),将方差调整为 2/n_in,因为 ReLU 会将一半的激活值置零。
- 在代码中的体现:1986 年原始论文尚未提出 Xavier 初始化(该方法是 2010 年 Glorot & Bengio 提出的),但现代实现中已成为标准实践。源码示例中使用 np.sqrt(2/input_size) 作为缩放因子。
来源
- paper_02_backpropagation — 代码实现中的权重初始化注释
相关
- 梯度消失 — mitigates
- 反向传播 — supports
- Sigmoid激活函数 — relates_to
- ReLU激活函数 — relates_to
- Batch Normalization — compares_to